home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / thinkref / archive / THINKPascalUH2.1.sea / THINKPas Univ Hdr 2.1 / Interfaces / OSA.p < prev    next >
Text File  |  1995-09-14  |  55KB  |  1,481 lines

  1. { Converted with MPW2TPas Tuesday, September 12, 1995 8:45:14 PM }
  2. {}
  3. {     File:        OSA.p}
  4. { }
  5. {     Contains:    AppleScript Client Interfaces.}
  6. { }
  7. {     Version:    Technology:    AppleScript 1.1}
  8. {                 Package:    Universal Interfaces 2.1 in “MPW Latest” on ETO #18}
  9. { }
  10. {     Copyright:    © 1984-1995 by Apple Computer, Inc.}
  11. {                 All rights reserved.}
  12. { }
  13. {     Bugs?:        If you find a problem with this file, use the Apple Bug Reporter}
  14. {                 stack.  Include the file and version information (from above)}
  15. {                 in the problem description and send to:}
  16. {                     Internet:    apple.bugs@applelink.apple.com}
  17. {                     AppleLink:    APPLE.BUGS}
  18. { }
  19. {}
  20.  
  21. unit OSA;
  22. interface
  23.  
  24.  
  25. {$IFC UNDEFINED __OSA__}
  26. {$SETC __OSA__ := 1}
  27.  
  28.     uses
  29.         ConditionalMacros, Types, Errors, AppleTalk, Processes, PPCToolbox, EPPC, Notification, AppleEvents, AEObjects, Components;
  30.  
  31. { $PUSH}
  32. { $ALIGN MAC68K}
  33. { $LibExport+}
  34.  
  35.     const
  36.         kOSAComponentType = 'osa ';
  37.  
  38. { 0x73637074 }
  39.         kOSAGenericScriptingComponentSubtype = 'scpt';
  40.  
  41. {    Type of script document files.    }
  42. { 0x6f736173 }
  43.         kOSAFileType = 'osas';
  44.  
  45. {}
  46. {        Suite and event code of the RecordedText event. }
  47. {        (See OSAStartRecording, below.)}
  48. {    }
  49. { 0x61736372 }
  50.         kOSASuite = 'ascr';
  51.  
  52. { 0x72656364 }
  53.         kOSARecordedText = 'recd';
  54.  
  55. { Selector returns boolean }
  56. { 0x6d6f6469 }
  57.         kOSAScriptIsModified = 'modi';
  58.  
  59. { Selector returns boolean }
  60. { 0x63736372 }
  61.         kOSAScriptIsTypeCompiledScript = 'cscr';
  62.  
  63. { Selector returns boolean }
  64. { 0x76616c75 }
  65.         kOSAScriptIsTypeScriptValue = 'valu';
  66.  
  67. { Selector returns boolean }
  68. { 0x636e7478 }
  69.         kOSAScriptIsTypeScriptContext = 'cntx';
  70.  
  71. { Selector returns a DescType which may be passed to OSACoerceToDesc }
  72. { 0x62657374 }
  73.         kOSAScriptBestType = 'best';
  74.  
  75. {}
  76. {        This selector is used to determine whether a script has source }
  77. {        associated with it that when given to OSAGetSource, the call will not}
  78. {        fail.  The selector returns a boolean.}
  79. {    }
  80. { 0x67737263 }
  81.         kOSACanGetSource = 'gsrc';
  82.  
  83.         typeOSADialectInfo = 'difo';                        {  0x6469666f   }
  84.         keyOSADialectName = 'dnam';                        {  0x646e616d   }
  85.         keyOSADialectCode = 'dcod';                        {  0x64636f64   }
  86.         keyOSADialectLangCode = 'dlcd';                        {  0x646c6364   }
  87.         keyOSADialectScriptCode = 'dscd';
  88.  
  89.  
  90.     type
  91.         OSAError = ComponentResult;
  92.  
  93. { Under the Open Scripting Architecture all error results are longs }
  94.         OSAID = LONGINT;
  95.  
  96. {}
  97. {        OSAIDs allow transparent manipulation of scripts associated with}
  98. {         various scripting systems.}
  99. {    }
  100.  
  101.     const
  102.         kOSANullScript = 0;
  103.  
  104. { No -script constant. }
  105.         kOSANullMode = 0;                            { sounds better }
  106.         kOSAModeNull = 0;                            { tastes consistent }
  107.  
  108. {}
  109. {        Some routines take flags that control their execution.  This constant}
  110. {        declares default mode settings are used.}
  111. {    }
  112.     type
  113.         OSACreateAppleEventProcPtr = ProcPtr;  { FUNCTION OSACreateAppleEvent(theAEEventClass: AEEventClass; theAEEventID: AEEventID; (CONST)VAR target: AEAddressDesc; returnID: INTEGER; transactionID: LONGINT; VAR result: AppleEvent; refCon: LONGINT): OSErr; }
  114.         OSACreateAppleEventUPP = UniversalProcPtr;
  115.  
  116.     const
  117.         uppOSACreateAppleEventProcInfo = $000FEFE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 2 byte param, 4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  118.  
  119.     function NewOSACreateAppleEventProc (userRoutine: OSACreateAppleEventProcPtr): OSACreateAppleEventUPP;
  120.     {$IFC NOT GENERATINGCFM }
  121.     inline
  122.         $2E9F;
  123.     {$ENDC}
  124.  
  125.     function CallOSACreateAppleEventProc (theAEEventClass: AEEventClass; theAEEventID: AEEventID; {CONST}
  126.                                     var target: AEAddressDesc; returnID: INTEGER; transactionID: LONGINT; var result: AppleEvent; refCon: LONGINT; userRoutine: OSACreateAppleEventUPP): OSErr;
  127.     {$IFC NOT GENERATINGCFM}
  128.     inline
  129.         $205F, $4E90;
  130.     {$ENDC}
  131.     type
  132.         OSASendProcPtr = ProcPtr;  { FUNCTION OSASend((CONST)VAR theAppleEvent: AppleEvent; VAR reply: AppleEvent; sendMode: AESendMode; sendPriority: AESendPriority; timeOutInTicks: LONGINT; idleProc: AEIdleUPP; filterProc: AEFilterUPP; refCon: LONGINT): OSErr; }
  133.         OSASendUPP = UniversalProcPtr;
  134.  
  135.     const
  136.         uppOSASendProcInfo = $003FEFE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 2 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  137.  
  138.     function NewOSASendProc (userRoutine: OSASendProcPtr): OSASendUPP;
  139.     {$IFC NOT GENERATINGCFM }
  140.     inline
  141.         $2E9F;
  142.     {$ENDC}
  143.  
  144.     function CallOSASendProc ({CONST}
  145.                                     var theAppleEvent: AppleEvent; var reply: AppleEvent; sendMode: AESendMode; sendPriority: AESendPriority; timeOutInTicks: LONGINT; idleProc: AEIdleUPP; filterProc: AEFilterUPP; refCon: LONGINT; userRoutine: OSASendUPP): OSErr;
  146.     {$IFC NOT GENERATINGCFM}
  147.     inline
  148.         $205F, $4E90;
  149.     {$ENDC}
  150. {*************************************************************************}
  151. {    Standard Script Errors}
  152. {**************************************************************************}
  153. {    It is recommended that scripting components use the following set of error}
  154. {    codes to signal failure when applicable.  This enables applications that}
  155. {    use the OSA API to deal with some class of script errors in a less than }
  156. {    ad hoc manner.  Scripting components are of course encouraged to return}
  157. {    component-specific errors when these don't apply.}
  158. {*************************************************************************}
  159. {        Dynamic errors:}
  160. {}
  161. {    These errors result from data-dependent conditions and are typically}
  162. {    signaled at runtime.}
  163. {}
  164. {}
  165. {        Signaled when a value can't be coerced to the desired type. Similar}
  166. {          to errOSATypeError except results from coercion.}
  167. {    }
  168.  
  169.     const
  170.         errOSACantCoerce = errAECoercionFail;
  171.  
  172. { Signaled when an object is not found in a container }
  173.         errOSACantAccess = errAENoSuchObject;
  174.  
  175. {}
  176. {        Signaled when an object cannot be set in a container.  Same as }
  177. {          AERegistry error errAEWriteDenied.}
  178. {    }
  179.         errOSACantAssign = -10006;
  180.  
  181. {}
  182. {        Signaled by user scripts or applications when no actual error code}
  183. {          is to be returned.  Simply means "an error has occurred".  Most useful}
  184. {          in conjunction with an error message from the application.}
  185. {    }
  186.         errOSAGeneralError = -2700;
  187.  
  188. { Signaled when there is an attempt to divide by zero }
  189.         errOSADivideByZero = -2701;
  190.  
  191. { Signaled when integer or real value is too large to be represented }
  192.         errOSANumericOverflow = -2702;
  193.  
  194. {}
  195. {        Signaled when application can't be launched or when it is remote and}
  196. {          program linking is not enabled.}
  197. {    }
  198.         errOSACantLaunch = -2703;
  199.  
  200. { Signaled when an application can't respond to AppleEvents }
  201.         errOSAAppNotHighLevelEventAware = -2704;
  202.  
  203. { Signaled when an application's terminology resource is not readable }
  204.         errOSACorruptTerminology = -2705;
  205.  
  206. { Signaled when the runtime stack overflows }
  207.         errOSAStackOverflow = -2706;
  208.  
  209. { Signaled when a runtime internal data structure overflows }
  210.         errOSAInternalTableOverflow = -2707;
  211.  
  212. {}
  213. {        Signaled when an intrinsic limitation is exceeded for the size of }
  214. {          a value or data structure.}
  215. {    }
  216.         errOSADataBlockTooLarge = -2708;
  217.  
  218.         errOSACantGetTerminology = -2709;
  219.  
  220.         errOSACantCreate = -2710;
  221.  
  222. {        Component-specific dynamic script errors:}
  223. {}
  224. {    The range -2720 thru -2739 is reserved for component-specific runtime errors.}
  225. {    (Note that error codes from different scripting components in this range will}
  226. {    overlap.)}
  227. {}
  228. {        Static errors:}
  229. {}
  230. {    These errors comprise what are commonly thought of as parse and compile-}
  231. {    time errors.  However, in a dynamic system (e.g. AppleScript) any or all}
  232. {    of these may also occur at runtime.}
  233. {}
  234. { Signaled when data was not the right type and coercion is not allowed }
  235.         errOSATypeError = errAEWrongDataType;
  236.  
  237. { Signaled when a message was sent to an object that didn't handle it }
  238.         OSAMessageNotUnderstood = errAEEventNotHandled;
  239.  
  240. {}
  241. {        Signaled when a function to be returned doesn't exist.  (Probably only}
  242. {          useful in languages with first-class functions that distinguish between}
  243. {          functions and other values (two name spaces). This is different from}
  244. {          errOSAMessageNotUnderstood, which may be signaled when the method is}
  245. {          invoked.}
  246. {    }
  247.         OSAUndefinedHandler = errAEHandlerNotFound;
  248.  
  249. { Signaled when a container can never have the requested object }
  250.         OSAIllegalAccess = errAEAccessorNotFound;
  251.  
  252. { Signaled when index was out of range. Specialization of errOSACantAccess. }
  253.         OSAIllegalIndex = errAEIllegalIndex;
  254.  
  255. { Signaled when a range is screwy. Specialization of errOSACantAccess. }
  256.         OSAIllegalRange = errAEImpossibleRange;
  257.  
  258. {}
  259. {        Signaled when an object can never be set in a container.  Same as }
  260. {          AERegistry error errAENotModifiable.}
  261. {    }
  262.         OSAIllegalAssign = -10003;
  263.  
  264. {}
  265. {        Signaled when a syntax error occurs. (e.g. "Syntax error" or}
  266. {         "<this> can't go after <that>").}
  267. {    }
  268.         OSASyntaxError = -2740;
  269.  
  270. {}
  271. {        Signaled when another form of syntax was expected. (e.g. "expected}
  272. {          a <type> but found <this>").}
  273. {    }
  274.         OSASyntaxTypeError = -2741;
  275.  
  276. { Signaled when a name or number is too long to be parsed }
  277.         OSATokenTooLong = -2742;
  278.  
  279. {}
  280. {        Signaled when a parameter is missing for a function invocation.  Note}
  281. {          that in some languages, this error may occur at runtime.}
  282. {    }
  283.         OSAMissingParameter = errAEDescNotFound;
  284.  
  285. {}
  286. {        Signaled when function is called with the wrong number of parameters,}
  287. {          or a parameter pattern cannot be matched.}
  288. {    }
  289.         OSAParameterMismatch = errAEWrongNumberArgs;
  290.  
  291. {}
  292. {        Signaled when a formal parameter, local variable, or instance variable}
  293. {          is specified more than once.}
  294. {    }
  295.         OSADuplicateParameter = -2750;
  296.  
  297. {}
  298. {        Signaled when a formal parameter, local variable, or instance variable}
  299. {          is specified more than once.}
  300. {    }
  301.         OSADuplicateProperty = -2751;
  302.  
  303. {}
  304. {        Signaled when more than one handler is defined with the same name in }
  305. {          a scope where the language doesn't allow it.}
  306. {    }
  307.         OSADuplicateHandler = -2752;
  308.  
  309. { Signaled when a variable is accessed that has no value }
  310.         OSAUndefinedVariable = -2753;
  311.  
  312. {}
  313. {        Signaled when a variable is declared inconsistently in the same scope,}
  314. {          such as both local and global.}
  315. {    }
  316.         OSAInconsistentDeclarations = -2754;
  317.  
  318. {}
  319. {        Signaled when illegal control flow occurs in an application (no catcher}
  320. {          for throw, non-lexical loop exit, etc.).}
  321. {    }
  322.         OSAControlFlowError = -2755;
  323.  
  324. {        Component-specific static script errors:}
  325. {}
  326. {    The range -2760 thru -2779 is reserved for component-specific parsing and}
  327. {    compile-time errors. (Note that error codes from different scripting}
  328. {    components in this range will overlap.)}
  329. {}
  330. {        Dialect-specific script errors:}
  331. {}
  332. {    The range -2780 thru -2799 is reserved for dialect specific error codes for}
  333. {    scripting components that support dialects. (Note that error codes from}
  334. {    different scripting components in this range will overlap, as well as error}
  335. {    codes from different dialects in the same scripting component.)}
  336. {}
  337. {*************************************************************************}
  338. {    OSA Interface Descriptions}
  339. {**************************************************************************}
  340. {    The OSA Interface is broken down into a required interface, and several}
  341. {    optional interfaces to support additional functionality.  A given scripting}
  342. {    component may choose to support only some of the optional interfaces in}
  343. {    addition to the basic interface.  The OSA Component Flags may be used to }
  344. {    query the Component Manager to find a scripting component with a particular}
  345. {    capability, or determine if a particular scripting component supports a }
  346. {    particular capability.}
  347. {*************************************************************************}
  348. { OSA Component Flags: }
  349.         kOSASupportsCompiling = $0002;
  350.         kOSASupportsGetSource = $0004;
  351.         kOSASupportsAECoercion = $0008;
  352.         kOSASupportsAESending = $0010;
  353.         kOSASupportsRecording = $0020;
  354.         kOSASupportsConvenience = $0040;
  355.         kOSASupportsDialects = $0080;
  356.         kOSASupportsEventHandling = $0100;
  357.  
  358. { Component Selectors: }
  359.         kOSASelectLoad = $0001;
  360.         kOSASelectStore = $0002;
  361.         kOSASelectExecute = $0003;
  362.         kOSASelectDisplay = $0004;
  363.         kOSASelectScriptError = $0005;
  364.         kOSASelectDispose = $0006;
  365.         kOSASelectSetScriptInfo = $0007;
  366.         kOSASelectGetScriptInfo = $0008;
  367.         kOSASelectSetActiveProc = $0009;
  368.         kOSASelectGetActiveProc = $000A;
  369.  
  370. { Compiling: }
  371.         kOSASelectScriptingComponentName = $0102;
  372.         kOSASelectCompile = $0103;
  373.         kOSASelectCopyID = $0104;
  374.  
  375. { GetSource: }
  376.         kOSASelectGetSource = $0201;
  377.  
  378. { AECoercion: }
  379.         kOSASelectCoerceFromDesc = $0301;
  380.         kOSASelectCoerceToDesc = $0302;
  381.  
  382. { AESending: }
  383.         kOSASelectSetSendProc = $0401;
  384.         kOSASelectGetSendProc = $0402;
  385.         kOSASelectSetCreateProc = $0403;
  386.         kOSASelectGetCreateProc = $0404;
  387.         kOSASelectSetDefaultTarget = $0405;
  388.  
  389. { Recording: }
  390.         kOSASelectStartRecording = $0501;
  391.         kOSASelectStopRecording = $0502;
  392.  
  393. { Convenience: }
  394.         kOSASelectLoadExecute = $0601;
  395.         kOSASelectCompileExecute = $0602;
  396.         kOSASelectDoScript = $0603;
  397.  
  398. { Dialects: }
  399.         kOSASelectSetCurrentDialect = $0701;
  400.         kOSASelectGetCurrentDialect = $0702;
  401.         kOSASelectAvailableDialects = $0703;
  402.         kOSASelectGetDialectInfo = $0704;
  403.         kOSASelectAvailableDialectCodeList = $0705;
  404.  
  405. { Event Handling: }
  406.         kOSASelectSetResumeDispatchProc = $0801;
  407.         kOSASelectGetResumeDispatchProc = $0802;
  408.         kOSASelectExecuteEvent = $0803;
  409.         kOSASelectDoEvent = $0804;
  410.         kOSASelectMakeContext = $0805;
  411.  
  412. { scripting component specific selectors are added beginning with this value  }
  413.         kOSASelectComponentSpecificStart = $1001;
  414.  
  415. {        Mode Flags:}
  416. {}
  417. {    Warning: These should not conflict with the AESend mode flags in}
  418. {    AppleEvents.h, because we may want to use them as OSA mode flags too.}
  419. {}
  420. {}
  421. {        This mode flag may be passed to OSALoad, OSAStore or OSACompile to}
  422. {          instruct the scripting component to not retain the "source" of an}
  423. {          expression.  This will cause the OSAGetSource call to return the error}
  424. {          errOSASourceNotAvailable if used.  However, some scripting components}
  425. {          may not retain the source anyway.  This is mainly used when either space}
  426. {          efficiency is desired, or a script is to be "locked" so that its}
  427. {          implementation may not be viewed.}
  428. {    }
  429.         kOSAModePreventGetSource = $00000001;
  430.  
  431. {}
  432. {        These mode flags may be passed to OSACompile, OSAExecute, OSALoadExecute}
  433. {          OSACompileExecute, OSADoScript, OSAExecuteEvent, or OSADoEvent to}
  434. {          indicate whether or not the script may interact with the user, switch}
  435. {          layer or reconnect if necessary.  Any AppleEvents will be sent with the}
  436. {          corresponding AESend mode supplied.}
  437. {    }
  438.         kOSAModeNeverInteract = kAENeverInteract;
  439.         kOSAModeCanInteract = kAECanInteract;
  440.         kOSAModeAlwaysInteract = kAEAlwaysInteract;
  441.         kOSAModeDontReconnect = kAEDontReconnect;
  442.  
  443. {}
  444. {        This mode flag may be passed to OSACompile, OSAExecute, OSALoadExecute}
  445. {          OSACompileExecute, OSADoScript, OSAExecuteEvent, or OSADoEvent to}
  446. {          indicate whether or not AppleEvents should be sent with the}
  447. {          kAECanSwitchLayer mode flag sent or not. NOTE: This flag is exactly the}
  448. {          opposite sense of the AppleEvent flag kAECanSwitchLayer.  This is to}
  449. {          provide a more convenient default, i.e. not supplying any mode}
  450. {          (kOSAModeNull) means to send events with kAECanSwitchLayer.  Supplying}
  451. {          the kOSAModeCantSwitchLayer mode flag will cause AESend to be called}
  452. {          without kAECanSwitchLayer.}
  453. {    }
  454.         kOSAModeCantSwitchLayer = $00000040;
  455.  
  456. {}
  457. {        This mode flag may be passed to OSACompile, OSAExecute, OSALoadExecute}
  458. {          OSACompileExecute, OSADoScript, OSAExecuteEvent, or OSADoEvent to}
  459. {          indicate whether or not AppleEvents should be sent with the kAEDontRecord}
  460. {          mode flag sent or not. NOTE: This flag is exactly the opposite sense of}
  461. {          the AppleEvent flag kAEDontRecord.  This is to provide a more convenient}
  462. {          default, i.e. not supplying any mode (kOSAModeNull) means to send events}
  463. {          with kAEDontRecord.  Supplying the kOSAModeDoRecord mode flag will }
  464. {          cause AESend to be called without kAEDontRecord.}
  465. {    }
  466.         kOSAModeDoRecord = $00001000;
  467.  
  468. {}
  469. {        This is a mode flag for OSACompile that indicates that a context should}
  470. {          be created as the result of compilation. All handler definitions are}
  471. {          inserted into the new context, and variables are initialized by}
  472. {          evaluating their initial values in a null context (i.e. they must be}
  473. {          constant expressions).}
  474. {    }
  475.         kOSAModeCompileIntoContext = $00000002;
  476.  
  477. {}
  478. {        This is a mode flag for OSACompile that indicates that the previous}
  479. {          script ID (input to OSACompile) should be augmented with any new}
  480. {          definitions in the sourceData rather than replaced with a new script.}
  481. {          This means that the previous script ID must designate a context.}
  482. {          The presence of this flag causes the kOSAModeCompileIntoContext flag}
  483. {          to be implicitly used, causing any new definitions to be initialized}
  484. {          in a null context.}
  485. {    }
  486.         kOSAModeAugmentContext = $00000004;
  487.  
  488. {}
  489. {        This mode flag may be passed to OSADisplay or OSADoScript to indicate}
  490. {          that output only need be human-readable, not re-compilable by OSACompile.}
  491. {          If used, output may be arbitrarily "beautified", e.g. quotes may be left}
  492. {          off of string values, long lists may have elipses, etc.}
  493. {    }
  494.         kOSAModeDisplayForHumans = $00000008;
  495.  
  496. {}
  497. {        This mode flag may be passed to OSAStore in the case where the scriptID}
  498. {          is a context.  This causes the context to be saved, but not the context's}
  499. {          parent context.  When the stored context is loaded back in, the parent}
  500. {          will be kOSANullScript.}
  501. {    }
  502.         kOSAModeDontStoreParent = $00010000;
  503.  
  504. {}
  505. {        This mode flag may be passed to OSAExecuteEvent to cause the event to}
  506. {          be dispatched to the direct object of the event. The direct object (or}
  507. {          subject attribute if the direct object is a non-object specifier) will}
  508. {          be resolved, and the resulting script object will be the recipient of}
  509. {          the message. The context argument to OSAExecuteEvent will serve as the}
  510. {          root of the lookup/resolution process.}
  511. {    }
  512.         kOSAModeDispatchToDirectObject = $00020000;
  513.  
  514. {}
  515. {        This mode flag may be passed to OSAExecuteEvent to indicate that}
  516. {          components do not have to get the data of object specifier arguments.}
  517. {    }
  518.         kOSAModeDontGetDataForArguments = $00040000;
  519.  
  520. {*************************************************************************}
  521. {    OSA Basic Scripting Interface}
  522. {**************************************************************************}
  523. {    Scripting components must at least support the Basic Scripting interface.}
  524. {*************************************************************************}
  525. {        Loading and Storing Scripts:}
  526. {}
  527. {    These routines allow scripts to be loaded and stored in their internal}
  528. {    (possibly compiled, non-text) representation.}
  529. {}
  530. { Resource type for scripts }
  531.         kOSAScriptResourceType = kOSAGenericScriptingComponentSubtype;
  532.  
  533. {}
  534. {        Default type given to OSAStore which creates "generic" loadable script}
  535. {          data descriptors.}
  536. {    }
  537.         typeOSAGenericStorage = kOSAScriptResourceType;
  538.  
  539.  
  540.     function OSALoad (scriptingComponent: ComponentInstance; {CONST}
  541.                                     var scriptData: AEDesc; modeFlags: LONGINT; var resultingScriptID: OSAID): OSAError;
  542.     {$IFC NOT GENERATINGCFM}
  543.     inline
  544.         $2F3C, $C, $0001, $7000, $A82A;
  545.     {$ENDC}
  546. {}
  547. {        OSAComponentFunctionInline(kOSASelectLoad, 12);}
  548. {    }
  549. {        Errors:}
  550. {            badComponentInstance        invalid scripting component instance}
  551. {            errOSASystemError}
  552. {            errOSABadStorageType:        scriptData not for this scripting component}
  553. {            errOSACorruptData:            data seems to be corrupt}
  554. {            errOSADataFormatObsolete    script data format is no longer supported}
  555. {            errOSADataFormatTooNew        script data format is from a newer version}
  556. {        }
  557. {        ModeFlags:}
  558. {            kOSAModePreventGetSource}
  559. {    }
  560.     function OSAStore (scriptingComponent: ComponentInstance; scriptID: OSAID; desiredType: DescType; modeFlags: LONGINT; var resultingScriptData: AEDesc): OSAError;
  561.     {$IFC NOT GENERATINGCFM}
  562.     inline
  563.         $2F3C, $10, $0002, $7000, $A82A;
  564.     {$ENDC}
  565. {}
  566. {        OSAComponentFunctionInline(kOSASelectStore, 16);}
  567. {    }
  568. {        Errors:}
  569. {            badComponentInstance    invalid scripting component instance}
  570. {            errOSASystemError}
  571. {            errOSAInvalidID}
  572. {            errOSABadStorageType:    desiredType not for this scripting component}
  573. {        }
  574. {        ModeFlags:}
  575. {            kOSAModePreventGetSource}
  576. {            kOSAModeDontStoreParent}
  577. {    }
  578. { Executing Scripts: }
  579.     function OSAExecute (scriptingComponent: ComponentInstance; compiledScriptID: OSAID; contextID: OSAID; modeFlags: LONGINT; var resultingScriptValueID: OSAID): OSAError;
  580.     {$IFC NOT GENERATINGCFM}
  581.     inline
  582.         $2F3C, $10, $0003, $7000, $A82A;
  583.     {$ENDC}
  584. {}
  585. {        OSAComponentFunctionInline(kOSASelectExecute, 16);}
  586. {        This call runs a script.  The contextID represents the environment}
  587. {        with which global variables in the script are resolved.  The constant}
  588. {        kOSANullScript may be used for the contextID if the application wishes}
  589. {        to not deal with context directly (a default one is associated with each}
  590. {        scripting component instance).  The resultingScriptValueID is the }
  591. {        result of evaluation, and contains a value which may be displayed using}
  592. {        the OSAGetSource call.  The modeFlags convey scripting component}
  593. {        specific information.}
  594. {    }
  595. {        Errors:}
  596. {            badComponentInstance    invalid scripting component instance}
  597. {            errOSASystemError}
  598. {            errOSAInvalidID}
  599. {            errOSAScriptError:        the executing script got an error}
  600. {    }
  601. {        ModeFlags:}
  602. {            kOSAModeNeverInteract}
  603. {            kOSAModeCanInteract}
  604. {            kOSAModeAlwaysInteract}
  605. {            kOSAModeCantSwitchLayer}
  606. {            kOSAModeDontReconnect}
  607. {            kOSAModeDoRecord}
  608. {    }
  609. { Displaying results: }
  610.     function OSADisplay (scriptingComponent: ComponentInstance; scriptValueID: OSAID; desiredType: DescType; modeFlags: LONGINT; var resultingText: AEDesc): OSAError;
  611.     {$IFC NOT GENERATINGCFM}
  612.     inline
  613.         $2F3C, $10, $0004, $7000, $A82A;
  614.     {$ENDC}
  615. {}
  616. {        OSAComponentFunctionInline(kOSASelectDisplay, 16);}
  617. {        This call is used to convert results (script value IDs) into displayable}
  618. {        text. The desiredType should be at least typeChar, and modeFlags are}
  619. {        scripting system specific flags to control the formatting of the}
  620. {        resulting text. This call differs from OSAGetSource in that (1) it}
  621. {        always produces at least typeChar, (2) is only works on script values,}
  622. {        (3) it may display it's output in non-compilable form (e.g. without}
  623. {        string quotes, elipses inserted in long and/or circular lists, etc.) and}
  624. {        (4) it is required by the basic scripting interface.}
  625. {    }
  626. {        Errors:}
  627. {            badComponentInstance    invalid scripting component instance}
  628. {            errOSASystemError}
  629. {            errOSAInvalidID}
  630. {            errAECoercionFail:        desiredType not supported by scripting component}
  631. {    }
  632. {        ModeFlags:}
  633. {            kOSAModeDisplayForHumans}
  634. {    }
  635. { Getting Error Information: }
  636.     function OSAScriptError (scriptingComponent: ComponentInstance; selector: OSType; desiredType: DescType; var resultingErrorDescription: AEDesc): OSAError;
  637.     {$IFC NOT GENERATINGCFM}
  638.     inline
  639.         $2F3C, $C, $0005, $7000, $A82A;
  640.     {$ENDC}
  641. {}
  642. {        OSAComponentFunctionInline(kOSASelectScriptError, 12);}
  643. {        Whenever script execution returns errOSAExecutionError, this routine}
  644. {        may be used to get information about that error.  The selector describes}
  645. {        the type of information desired about the error (various selectors are}
  646. {        listed below).  The desiredType indicates the data type of the result}
  647. {        desired for that selector.}
  648. {    }
  649. {        Errors:}
  650. {            badComponentInstance    invalid scripting component instance}
  651. {            errOSASystemError}
  652. {            errOSABadSelector:        selector not supported by scripting component}
  653. {            errAECoercionFail:        desiredType not supported by scripting component}
  654. {    }
  655. { OSAScriptError selectors: }
  656. {}
  657. {        This selector is used to determine the error number of a script error.}
  658. {        These error numbers may be either system error numbers, or error numbers}
  659. {        that are scripting component specific.}
  660. {        Required desiredTypes:    }
  661. {              typeShortInteger}
  662. {    }
  663.  
  664.     const
  665.         kOSAErrorNumber = keyErrorNumber;
  666.  
  667. {}
  668. {        This selector is used to determine the full error message associated}
  669. {        with the error number.  It should include the name of the application}
  670. {        which caused the error, as well as the specific error that occurred.}
  671. {        This selector is sufficient for simple error reporting (but see}
  672. {        kOSAErrorBriefMessage, below).}
  673. {        Required desiredTypes:}
  674. {            typeChar                    error message string}
  675. {    }
  676.         kOSAErrorMessage = keyErrorString;
  677.  
  678. {}
  679. {        This selector is used to determine a brief error message associated with}
  680. {        the error number.  This message and should not mention the name of the}
  681. {        application which caused the error, any partial results or offending}
  682. {        object (see kOSAErrorApp, kOSAErrorPartialResult and}
  683. {        kOSAErrorOffendingObject, below).}
  684. {        Required desiredTypes:}
  685. {              typeChar                    brief error message string}
  686. {    }
  687. {  0x65727262  }
  688.         kOSAErrorBriefMessage = 'errb';
  689.  
  690. {}
  691. {        This selector is used to determine which application actually got the}
  692. {        error (if it was the result of an AESend), or the current application}
  693. {        if ....}
  694. {        Required desiredTypes:}
  695. {              typeProcessSerialNumber        PSN of the errant application}
  696. {              typeChar                    name of the errant application}
  697. {    }
  698. {  0x65726170  }
  699.         kOSAErrorApp = 'erap';
  700.  
  701. {}
  702. {        This selector is used to determine any partial result returned by an }
  703. {        operation. If an AESend call failed, but a partial result was returned,}
  704. {        then the partial result may be returned as an AEDesc.}
  705. {        Required desiredTypes:}
  706. {              typeBest                    AEDesc of any partial result}
  707. {    }
  708. {  0x70746c72   }
  709.         kOSAErrorPartialResult = 'ptlr';
  710.  
  711. {}
  712. {        This selector is used to determine any object which caused the error}
  713. {        that may have been indicated by an application.  The result is an }
  714. {        AEDesc.}
  715. {        Required desiredTypes:}
  716. {              typeBest                    AEDesc of any offending object}
  717. {    }
  718. {  0x65726f62   }
  719.         kOSAErrorOffendingObject = 'erob';
  720.  
  721. {}
  722. {        This selector is used to determine the type expected by a coercion }
  723. {        operation if a type error occurred.}
  724. {    }
  725. {  0x65727274   }
  726.         kOSAErrorExpectedType = 'errt';
  727.  
  728. {}
  729. {        This selector is used to determine the source text range (start and }
  730. {        end positions) of where the error occurred.}
  731. {        Required desiredTypes:}
  732. {              typeOSAErrorRange}
  733. {    }
  734. {  0x65726e67  }
  735.         kOSAErrorRange = 'erng';
  736.  
  737. {}
  738. {        An AERecord type containing keyOSASourceStart and keyOSASourceEnd fields}
  739. {        of type short.}
  740. {    }
  741. {  0x65726e67   }
  742.         typeOSAErrorRange = 'erng';
  743.  
  744. { Field of a typeOSAErrorRange record of typeShortInteger }
  745. {  0x73726373    }
  746.         keyOSASourceStart = 'srcs';
  747.  
  748. { Field of a typeOSAErrorRange record of typeShortInteger }
  749. {  0x73726365   }
  750.         keyOSASourceEnd = 'srce';
  751.  
  752. { Disposing Script IDs: }
  753.  
  754.     function OSADispose (scriptingComponent: ComponentInstance; scriptID: OSAID): OSAError;
  755.     {$IFC NOT GENERATINGCFM}
  756.     inline
  757.         $2F3C, $4, $0006, $7000, $A82A;
  758.     {$ENDC}
  759. {}
  760. {        OSAComponentFunctionInline(kOSASelectDispose, 4);}
  761. {        Disposes a script or context.}
  762. {    }
  763. {        Errors:}
  764. {            badComponentInstance    invalid scripting component instance}
  765. {            errOSASystemError}
  766. {            errOSAInvalidID}
  767. {    }
  768. { Getting and Setting Script Information: }
  769.     function OSASetScriptInfo (scriptingComponent: ComponentInstance; scriptID: OSAID; selector: OSType; value: LONGINT): OSAError;
  770.     {$IFC NOT GENERATINGCFM}
  771.     inline
  772.         $2F3C, $C, $0007, $7000, $A82A;
  773.     {$ENDC}
  774. {}
  775. {        OSAComponentFunctionInline(kOSASelectSetScriptInfo, 12);}
  776. {    }
  777. {        Errors:}
  778. {            badComponentInstance    invalid scripting component instance}
  779. {            errOSASystemError}
  780. {            errOSAInvalidID}
  781. {            errOSABadSelector:        selector not supported by scripting component}
  782. {                                    or selector not for this scriptID}
  783. {    }
  784.     function OSAGetScriptInfo (scriptingComponent: ComponentInstance; scriptID: OSAID; selector: OSType; var result: LONGINT): OSAError;
  785.     {$IFC NOT GENERATINGCFM}
  786.     inline
  787.         $2F3C, $C, $0008, $7000, $A82A;
  788.     {$ENDC}
  789. {}
  790. {        OSAComponentFunctionInline(kOSASelectGetScriptInfo, 12);}
  791. {    }
  792. {        Errors:}
  793. {            badComponentInstance    invalid scripting component instance}
  794. {            errOSASystemError}
  795. {            errOSAInvalidID}
  796. {            errOSABadSelector:        selector not supported by scripting component}
  797. {                                    or selector not for this scriptID}
  798. {    }
  799. { Manipulating the ActiveProc:}
  800. {}
  801. {    Scripting systems will supply default values for these procedures if they}
  802. {    are not set by the client:}
  803. {}
  804.     type
  805.         OSAActiveProcPtr = ProcPtr;  { FUNCTION OSAActive(refCon: LONGINT): OSErr; }
  806.         OSAActiveUPP = UniversalProcPtr;
  807.  
  808.     const
  809.         uppOSAActiveProcInfo = $000000E0; { FUNCTION (4 byte param): 2 byte result; }
  810.  
  811.     function NewOSAActiveProc (userRoutine: OSAActiveProcPtr): OSAActiveUPP;
  812.     {$IFC NOT GENERATINGCFM }
  813.     inline
  814.         $2E9F;
  815.     {$ENDC}
  816.  
  817.     function CallOSAActiveProc (refCon: LONGINT; userRoutine: OSAActiveUPP): OSErr;
  818.     {$IFC NOT GENERATINGCFM}
  819.     inline
  820.         $205F, $4E90;
  821.     {$ENDC}
  822.  
  823.     function OSASetActiveProc (scriptingComponent: ComponentInstance; activeProc: OSAActiveUPP; refCon: LONGINT): OSAError;
  824.     {$IFC NOT GENERATINGCFM}
  825.     inline
  826.         $2F3C, $8, $0009, $7000, $A82A;
  827.     {$ENDC}
  828. {}
  829. {        OSAComponentFunctionInline(kOSASelectSetActiveProc, 8);}
  830. {        If activeProc is nil, the default activeProc is used.}
  831. {    }
  832. {        Errors:}
  833. {            badComponentInstance    invalid scripting component instance}
  834. {            errOSASystemError}
  835. {    }
  836.     function OSAGetActiveProc (scriptingComponent: ComponentInstance; var activeProc: OSAActiveUPP; var refCon: LONGINT): OSAError;
  837.     {$IFC NOT GENERATINGCFM}
  838.     inline
  839.         $2F3C, $8, $000A, $7000, $A82A;
  840.     {$ENDC}
  841. {}
  842. {        OSAComponentFunctionInline(kOSASelectGetActiveProc, 8);}
  843. {    }
  844. {        Errors:}
  845. {            badComponentInstance    invalid scripting component instance}
  846. {            errOSASystemError}
  847. {    }
  848. {*************************************************************************}
  849. {    OSA Optional Compiling Interface}
  850. {**************************************************************************}
  851. {    Scripting components that support the Compiling interface have the }
  852. {    kOSASupportsCompiling bit set in it's ComponentDescription.}
  853. {*************************************************************************}
  854.     function OSAScriptingComponentName (scriptingComponent: ComponentInstance; var resultingScriptingComponentName: AEDesc): OSAError;
  855.     {$IFC NOT GENERATINGCFM}
  856.     inline
  857.         $2F3C, $4, $0102, $7000, $A82A;
  858.     {$ENDC}
  859. {}
  860. {        OSAComponentFunctionInline(kOSASelectScriptingComponentName, 4);}
  861. {        Given a scripting component, this routine returns the name of that}
  862. {        scripting component in a type that is coercable to text (typeChar).}
  863. {        The generic scripting component returns the name of the default}
  864. {        scripting component.  This name should be sufficient to convey to the}
  865. {        user the kind of script (syntax) he is expected to write.}
  866. {    }
  867. {        Errors:}
  868. {            badComponentInstance    invalid scripting component instance}
  869. {            errOSASystemError}
  870. {    }
  871.     function OSACompile (scriptingComponent: ComponentInstance; {CONST}
  872.                                     var sourceData: AEDesc; modeFlags: LONGINT; var previousAndResultingScriptID: OSAID): OSAError;
  873.     {$IFC NOT GENERATINGCFM}
  874.     inline
  875.         $2F3C, $C, $0103, $7000, $A82A;
  876.     {$ENDC}
  877. {}
  878. {        OSAComponentFunctionInline(kOSASelectCompile, 12);}
  879. {        Coerces input desc (possibly text) into a script's internal format.}
  880. {        Once compiled, the script is ready to run.  The modeFlags convey}
  881. {        scripting component specific information.  The previous script ID}
  882. {        (result parameter) is made to refer to the newly compiled script,}
  883. {        unless it was originally kOSANullScript.  In this case a new script}
  884. {        ID is created and used.}
  885. {    }
  886. {        Errors:}
  887. {            badComponentInstance    invalid scripting component instance}
  888. {            errOSASystemError}
  889. {            errAECoercionFail:        sourceData is not compilable}
  890. {            errOSAScriptError:        sourceData was a bad script (syntax error)}
  891. {            errOSAInvalidID:        previousAndResultingCompiledScriptID was not}
  892. {                                    valid on input}
  893. {    }
  894. {        ModeFlags:}
  895. {            kOSAModePreventGetSource}
  896. {            kOSAModeCompileIntoContext}
  897. {            kOSAModeAugmentContext}
  898. {            kOSAModeNeverInteract}
  899. {            kOSAModeCanInteract}
  900. {            kOSAModeAlwaysInteract}
  901. {            kOSAModeCantSwitchLayer}
  902. {            kOSAModeDontReconnect}
  903. {            kOSAModeDoRecord}
  904. {    }
  905.     function OSACopyID (scriptingComponent: ComponentInstance; fromID: OSAID; var toID: OSAID): OSAError;
  906.     {$IFC NOT GENERATINGCFM}
  907.     inline
  908.         $2F3C, $8, $0104, $7000, $A82A;
  909.     {$ENDC}
  910. {}
  911. {        OSAComponentFunctionInline(kOSASelectCopyID, 8);}
  912. {        If toID is a reference to kOSANullScript then it is updated to have a}
  913. {        new scriptID value.  This call can be used to perform undo or revert}
  914. {        operations on scripts. }
  915. {    }
  916. {        Errors:}
  917. {            badComponentInstance    invalid scripting component instance}
  918. {            errOSASystemError}
  919. {            errOSAInvalidID}
  920. {    }
  921. {*************************************************************************}
  922. {    OSA Optional GetSource Interface}
  923. {**************************************************************************}
  924. {    Scripting components that support the GetSource interface have the }
  925. {    kOSASupportsGetSource bit set in it's ComponentDescription.}
  926. {*************************************************************************}
  927.     function OSAGetSource (scriptingComponent: ComponentInstance; scriptID: OSAID; desiredType: DescType; var resultingSourceData: AEDesc): OSAError;
  928.     {$IFC NOT GENERATINGCFM}
  929.     inline
  930.         $2F3C, $C, $0201, $7000, $A82A;
  931.     {$ENDC}
  932. {}
  933. {        OSAComponentFunctionInline(kOSASelectGetSource, 12);}
  934. {        This routine causes a compiled script to be output in a form (possibly}
  935. {        text) such that it is suitable to be passed back to OSACompile.}
  936. {}
  937. {        Errors:}
  938. {            badComponentInstance    invalid scripting component instance}
  939. {            errOSASystemError}
  940. {            errOSAInvalidID}
  941. {            errOSASourceNotAvailable    can't get source for this scriptID}
  942. {    }
  943. {*************************************************************************}
  944. {    OSA Optional AECoercion Interface}
  945. {**************************************************************************}
  946. {    Scripting components that support the AECoercion interface have the }
  947. {    kOSASupportsAECoercion bit set in it's ComponentDescription.}
  948. {*************************************************************************}
  949.     function OSACoerceFromDesc (scriptingComponent: ComponentInstance; {CONST}
  950.                                     var scriptData: AEDesc; modeFlags: LONGINT; var resultingScriptID: OSAID): OSAError;
  951.     {$IFC NOT GENERATINGCFM}
  952.     inline
  953.         $2F3C, $C, $0301, $7000, $A82A;
  954.     {$ENDC}
  955. {}
  956. {        OSAComponentFunctionInline(kOSASelectCoerceFromDesc, 12);}
  957. {        This routine causes script data to be coerced into a script value.}
  958. {        If the scriptData is an AppleEvent, then the resultingScriptID is a}
  959. {        compiled script ID (mode flags for OSACompile may be used in this case).}
  960. {        Other scriptData descriptors create script value IDs.}
  961. {    }
  962. {        Errors:}
  963. {            badComponentInstance    invalid scripting component instance}
  964. {            errOSASystemError}
  965. {    }
  966. {        ModeFlags:}
  967. {            kOSAModePreventGetSource}
  968. {            kOSAModeCompileIntoContext}
  969. {            kOSAModeNeverInteract}
  970. {            kOSAModeCanInteract}
  971. {            kOSAModeAlwaysInteract}
  972. {            kOSAModeCantSwitchLayer}
  973. {            kOSAModeDontReconnect}
  974. {            kOSAModeDoRecord}
  975. {    }
  976.     function OSACoerceToDesc (scriptingComponent: ComponentInstance; scriptID: OSAID; desiredType: DescType; modeFlags: LONGINT; var result: AEDesc): OSAError;
  977.     {$IFC NOT GENERATINGCFM}
  978.     inline
  979.         $2F3C, $10, $0302, $7000, $A82A;
  980.     {$ENDC}
  981. {}
  982. {        OSAComponentFunctionInline(kOSASelectCoerceToDesc, 16);}
  983. {        This routine causes a script value to be coerced into any desired form.}
  984. {        If the scriptID denotes a compiled script, then it may be coerced to }
  985. {        typeAppleEvent.}
  986. {    }
  987. {        Errors:}
  988. {            badComponentInstance    invalid scripting component instance}
  989. {            errOSASystemError}
  990. {            errOSAInvalidID}
  991. {    }
  992. {*************************************************************************}
  993. {    OSA Optional AESending Interface}
  994. {**************************************************************************}
  995. {    Scripting components that support the AESending interface have the }
  996. {    kOSASupportsAESending bit set in it's ComponentDescription.}
  997. {*************************************************************************}
  998. {}
  999. {    Scripting systems will supply default values for these procedures if they}
  1000. {    are not set by the client:}
  1001. {}
  1002.     function OSASetSendProc (scriptingComponent: ComponentInstance; sendProc: OSASendUPP; refCon: LONGINT): OSAError;
  1003.     {$IFC NOT GENERATINGCFM}
  1004.     inline
  1005.         $2F3C, $8, $0401, $7000, $A82A;
  1006.     {$ENDC}
  1007. {}
  1008. {        OSAComponentFunctionInline(kOSASelectSetSendProc, 8);}
  1009. {        If sendProc is nil, the default sendProc is used.}
  1010. {    }
  1011. {        Errors:}
  1012. {            badComponentInstance    invalid scripting component instance}
  1013. {            errOSASystemError}
  1014. {    }
  1015.     function OSAGetSendProc (scriptingComponent: ComponentInstance; var sendProc: OSASendUPP; var refCon: LONGINT): OSAError;
  1016.     {$IFC NOT GENERATINGCFM}
  1017.     inline
  1018.         $2F3C, $8, $0402, $7000, $A82A;
  1019.     {$ENDC}
  1020. {}
  1021. {        OSAComponentFunctionInline(kOSASelectGetSendProc, 8);}
  1022. {    }
  1023. {        Errors:}
  1024. {            badComponentInstance    invalid scripting component instance}
  1025. {            errOSASystemError}
  1026. {    }
  1027.     function OSASetCreateProc (scriptingComponent: ComponentInstance; createProc: OSACreateAppleEventUPP; refCon: LONGINT): OSAError;
  1028.     {$IFC NOT GENERATINGCFM}
  1029.     inline
  1030.         $2F3C, $8, $0403, $7000, $A82A;
  1031.     {$ENDC}
  1032. {}
  1033. {        OSAComponentFunctionInline(kOSASelectSetCreateProc, 8);}
  1034. {        If createProc is nil, the default createProc is used.}
  1035. {    }
  1036. {        Errors:}
  1037. {            badComponentInstance    invalid scripting component instance}
  1038. {            errOSASystemError}
  1039. {    }
  1040.     function OSAGetCreateProc (scriptingComponent: ComponentInstance; var createProc: OSACreateAppleEventUPP; var refCon: LONGINT): OSAError;
  1041.     {$IFC NOT GENERATINGCFM}
  1042.     inline
  1043.         $2F3C, $8, $0404, $7000, $A82A;
  1044.     {$ENDC}
  1045. {}
  1046. {        OSAComponentFunctionInline(kOSASelectGetCreateProc, 8);}
  1047. {    }
  1048. {        Errors:}
  1049. {            badComponentInstance    invalid scripting component instance}
  1050. {            errOSASystemError}
  1051. {    }
  1052.     function OSASetDefaultTarget (scriptingComponent: ComponentInstance; {CONST}
  1053.                                     var target: AEAddressDesc): OSAError;
  1054.     {$IFC NOT GENERATINGCFM}
  1055.     inline
  1056.         $2F3C, $4, $0405, $7000, $A82A;
  1057.     {$ENDC}
  1058. {}
  1059. {        OSAComponentFunctionInline(kOSASelectSetDefaultTarget, 4);}
  1060. {        This routine sets the default target application for AE sending.}
  1061. {        It also establishes the default target from which terminologies come.}
  1062. {        It is effectively like having an AppleScript "tell" statement around}
  1063. {        the entire program.  If this routine is not called, or if the target }
  1064. {        is a null AEDesc, then the current application is the default target.}
  1065. {    }
  1066. {        Errors:}
  1067. {            badComponentInstance    invalid scripting component instance}
  1068. {            errOSASystemError}
  1069. {    }
  1070. {*************************************************************************}
  1071. {    OSA Optional Recording Interface}
  1072. {**************************************************************************}
  1073. {    Scripting components that support the Recording interface have the }
  1074. {    kOSASupportsRecording bit set in it's ComponentDescription.}
  1075. {*************************************************************************}
  1076.     function OSAStartRecording (scriptingComponent: ComponentInstance; var compiledScriptToModifyID: OSAID): OSAError;
  1077.     {$IFC NOT GENERATINGCFM}
  1078.     inline
  1079.         $2F3C, $4, $0501, $7000, $A82A;
  1080.     {$ENDC}
  1081. {}
  1082. {        OSAComponentFunctionInline(kOSASelectStartRecording, 4);}
  1083. {        Starts recording.  If compiledScriptToModifyID is kOSANullScript, a}
  1084. {        new script ID is created and returned.  If the current application has}
  1085. {        a handler for the kOSARecordedText event, then kOSARecordedText events}
  1086. {        are sent to the application containing the text of each AppleEvent }
  1087. {        recorded.}
  1088. {    }
  1089. {        Errors:}
  1090. {            badComponentInstance    invalid scripting component instance}
  1091. {            errOSASystemError}
  1092. {            errOSAInvalidID}
  1093. {            errOSARecordingIsAlreadyOn}
  1094. {    }
  1095.     function OSAStopRecording (scriptingComponent: ComponentInstance; compiledScriptID: OSAID): OSAError;
  1096.     {$IFC NOT GENERATINGCFM}
  1097.     inline
  1098.         $2F3C, $4, $0502, $7000, $A82A;
  1099.     {$ENDC}
  1100. {}
  1101. {        OSAComponentFunctionInline(kOSASelectStopRecording, 4);}
  1102. {        If compiledScriptID is not being recorded into or recording is not}
  1103. {        currently on, no error is returned.}
  1104. {    }
  1105. {        Errors:}
  1106. {            badComponentInstance    invalid scripting component instance}
  1107. {            errOSASystemError}
  1108. {            errOSAInvalidID}
  1109. {    }
  1110. {*************************************************************************}
  1111. {    OSA Optional Convenience Interface}
  1112. {**************************************************************************}
  1113. {    Scripting components that support the Convenience interface have the }
  1114. {    kOSASupportsConvenience bit set in it's ComponentDescription.}
  1115. {*************************************************************************}
  1116.     function OSALoadExecute (scriptingComponent: ComponentInstance; {CONST}
  1117.                                     var scriptData: AEDesc; contextID: OSAID; modeFlags: LONGINT; var resultingScriptValueID: OSAID): OSAError;
  1118.     {$IFC NOT GENERATINGCFM}
  1119.     inline
  1120.         $2F3C, $10, $0601, $7000, $A82A;
  1121.     {$ENDC}
  1122. {}
  1123. {        OSAComponentFunctionInline(kOSASelectLoadExecute, 16);}
  1124. {        This routine is effectively equivalent to calling OSALoad followed by}
  1125. {        OSAExecute.  After execution, the compiled source is disposed.  Only the}
  1126. {        resulting value ID is retained.}
  1127. {    }
  1128. {        Errors:}
  1129. {            badComponentInstance        invalid scripting component instance}
  1130. {            errOSASystemError}
  1131. {            errOSABadStorageType:        scriptData not for this scripting component}
  1132. {            errOSACorruptData:            data seems to be corrupt}
  1133. {            errOSADataFormatObsolete    script data format is no longer supported}
  1134. {            errOSADataFormatTooNew        script data format is from a newer version}
  1135. {            errOSAInvalidID}
  1136. {            errOSAScriptError:            the executing script got an error}
  1137. {    }
  1138. {        ModeFlags:}
  1139. {            kOSAModeNeverInteract}
  1140. {            kOSAModeCanInteract}
  1141. {            kOSAModeAlwaysInteract}
  1142. {            kOSAModeCantSwitchLayer}
  1143. {            kOSAModeDontReconnect}
  1144. {            kOSAModeDoRecord}
  1145. {    }
  1146.     function OSACompileExecute (scriptingComponent: ComponentInstance; {CONST}
  1147.                                     var sourceData: AEDesc; contextID: OSAID; modeFlags: LONGINT; var resultingScriptValueID: OSAID): OSAError;
  1148.     {$IFC NOT GENERATINGCFM}
  1149.     inline
  1150.         $2F3C, $10, $0602, $7000, $A82A;
  1151.     {$ENDC}
  1152. {}
  1153. {        OSAComponentFunctionInline(kOSASelectCompileExecute, 16);}
  1154. {        This routine is effectively equivalent to calling OSACompile followed by}
  1155. {        OSAExecute.  After execution, the compiled source is disposed.  Only the}
  1156. {        resulting value ID is retained.}
  1157. {    }
  1158. {        Errors:}
  1159. {            badComponentInstance    invalid scripting component instance}
  1160. {            errOSASystemError}
  1161. {            errAECoercionFail:        sourceData is not compilable}
  1162. {            errOSAScriptError:        sourceData was a bad script (syntax error)}
  1163. {            errOSAInvalidID:        previousAndResultingCompiledScriptID was not}
  1164. {                                    valid on input}
  1165. {            errOSAScriptError:        the executing script got an error}
  1166. {    }
  1167. {        ModeFlags:}
  1168. {            kOSAModeNeverInteract}
  1169. {            kOSAModeCanInteract}
  1170. {            kOSAModeAlwaysInteract}
  1171. {            kOSAModeCantSwitchLayer}
  1172. {            kOSAModeDontReconnect}
  1173. {            kOSAModeDoRecord}
  1174. {    }
  1175.     function OSADoScript (scriptingComponent: ComponentInstance; {CONST}
  1176.                                     var sourceData: AEDesc; contextID: OSAID; desiredType: DescType; modeFlags: LONGINT; var resultingText: AEDesc): OSAError;
  1177.     {$IFC NOT GENERATINGCFM}
  1178.     inline
  1179.         $2F3C, $14, $0603, $7000, $A82A;
  1180.     {$ENDC}
  1181. {}
  1182. {        OSAComponentFunctionInline(kOSASelectDoScript, 20);}
  1183. {        This routine is effectively equivalent to calling OSACompile followed by}
  1184. {        OSAExecute and then OSADisplay.  After execution, the compiled source}
  1185. {        and the resulting value are is disposed.  Only the resultingText}
  1186. {        descriptor is retained.  If a script error occur during processing, the }
  1187. {        resultingText gets the error message of the error, and errOSAScriptError}
  1188. {        is returned.  OSAScriptError may still be used to extract more }
  1189. {        information about the particular error.}
  1190. {    }
  1191. {        Errors:}
  1192. {            badComponentInstance    invalid scripting component instance}
  1193. {            errOSASystemError}
  1194. {            errAECoercionFail:        sourceData is not compilable or }
  1195. {                                    desiredType not supported by scripting component}
  1196. {            errOSAScriptError:        sourceData was a bad script (syntax error)}
  1197. {            errOSAInvalidID:        previousAndResultingCompiledScriptID was not}
  1198. {                                    valid on input}
  1199. {            errOSAScriptError:        the executing script got an error}
  1200. {    }
  1201. {        ModeFlags:}
  1202. {            kOSAModeNeverInteract}
  1203. {            kOSAModeCanInteract}
  1204. {            kOSAModeAlwaysInteract}
  1205. {            kOSAModeCantSwitchLayer}
  1206. {            kOSAModeDontReconnect}
  1207. {            kOSAModeDoRecord}
  1208. {            kOSAModeDisplayForHumans}
  1209. {    }
  1210. {*************************************************************************}
  1211. {    OSA Optional Dialects Interface}
  1212. {**************************************************************************}
  1213. {    Scripting components that support the Dialects interface have the }
  1214. {    kOSASupportsDialects bit set in it's ComponentDescription.}
  1215. {*************************************************************************}
  1216. {}
  1217. {    These calls allows an scripting component that supports different dialects}
  1218. {    to dynamically switch between those dialects.  Although this interface is}
  1219. {    specified, the particular dialect codes are scripting component dependent.}
  1220. {}
  1221.     function OSASetCurrentDialect (scriptingComponent: ComponentInstance; dialectCode: INTEGER): OSAError;
  1222.     {$IFC NOT GENERATINGCFM}
  1223.     inline
  1224.         $2F3C, $2, $0701, $7000, $A82A;
  1225.     {$ENDC}
  1226. {}
  1227. {        OSAComponentFunctionInline(kOSASelectSetCurrentDialect, 2);}
  1228. {    }
  1229. {        Errors:}
  1230. {            badComponentInstance    invalid scripting component instance}
  1231. {            errOSASystemError}
  1232. {            errOSANoSuchDialect:    invalid dialectCode}
  1233. {    }
  1234.     function OSAGetCurrentDialect (scriptingComponent: ComponentInstance; var resultingDialectCode: INTEGER): OSAError;
  1235.     {$IFC NOT GENERATINGCFM}
  1236.     inline
  1237.         $2F3C, $4, $0702, $7000, $A82A;
  1238.     {$ENDC}
  1239. {}
  1240. {        OSAComponentFunctionInline(kOSASelectGetCurrentDialect, 4);}
  1241. {    }
  1242. {        Errors:}
  1243. {            badComponentInstance    invalid scripting component instance}
  1244. {            errOSASystemError}
  1245. {    }
  1246.     function OSAAvailableDialects (scriptingComponent: ComponentInstance; var resultingDialectInfoList: AEDesc): OSAError;
  1247.     {$IFC NOT GENERATINGCFM}
  1248.     inline
  1249.         $2F3C, $4, $0703, $7000, $A82A;
  1250.     {$ENDC}
  1251. {}
  1252. {        OSAComponentFunctionInline(kOSASelectAvailableDialects, 4);}
  1253. {        This call return an AEList containing information about each of the}
  1254. {        currently available dialects of a scripting component.  Each item}
  1255. {        is an AERecord of typeOSADialectInfo that contains at least the fields}
  1256. {        keyOSADialectName, keyOSADialectCode, KeyOSADialectLangCode and }
  1257. {        keyOSADialectScriptCode.}
  1258. {    }
  1259. {        Errors:}
  1260. {            badComponentInstance    invalid scripting component instance}
  1261. {            errOSASystemError}
  1262. {    }
  1263.     function OSAGetDialectInfo (scriptingComponent: ComponentInstance; dialectCode: INTEGER; selector: OSType; var resultingDialectInfo: AEDesc): OSAError;
  1264.     {$IFC NOT GENERATINGCFM}
  1265.     inline
  1266.         $2F3C, $A, $0704, $7000, $A82A;
  1267.     {$ENDC}
  1268. {}
  1269. {        OSAComponentFunctionInline(kOSASelectGetDialectInfo, 10);}
  1270. {        This call gives information about the specified dialect of a scripting}
  1271. {        component. It returns an AEDesc whose type depends on the selector }
  1272. {        specified. Available selectors are the same as the field keys for a}
  1273. {        dialect info record. The type of AEDesc returned is the same as the }
  1274. {        type of the field that has same key as the selector.}
  1275. {    }
  1276. {        Errors:}
  1277. {            badComponentInstance    invalid scripting component instance}
  1278. {            errOSASystemError}
  1279. {             errOSABadSelector}
  1280. {            errOSANoSuchDialect:    invalid dialectCode}
  1281. {    }
  1282.     function OSAAvailableDialectCodeList (scriptingComponent: ComponentInstance; var resultingDialectCodeList: AEDesc): OSAError;
  1283.     {$IFC NOT GENERATINGCFM}
  1284.     inline
  1285.         $2F3C, $4, $0705, $7000, $A82A;
  1286.     {$ENDC}
  1287. {}
  1288. {        OSAComponentFunctionInline(kOSASelectAvailableDialectCodeList, 4);}
  1289. {        This is alternative to OSAGetAvailableDialectCodeList. Use this call}
  1290. {        and  OSAGetDialectInfo to get information on dialects.}
  1291. {        This call return an AEList containing dialect code for each of the}
  1292. {        currently available dialects of a scripting component. Each dialect}
  1293. {        code is a short integer of type typeShortInteger.}
  1294. {    }
  1295. {        Errors:}
  1296. {            badComponentInstance    invalid scripting component instance}
  1297. {            errOSASystemError}
  1298. {}
  1299. {        Type of a dialect info record containing at least keyOSADialectName}
  1300. {        and keyOSADialectCode fields.}
  1301. {}
  1302. {        keys for dialect info record, also used as selectors to OSAGetDialectInfo.}
  1303. {}
  1304. {        Field of a typeOSADialectInfo record of typeChar.}
  1305. {        Field of a typeOSADialectInfo record of typeShortInteger.}
  1306. {        Field of a typeOSADialectInfo record of typeShortInteger.}
  1307. {        Field of a typeOSADialectInfo record of typeShortInteger.}
  1308. {    }
  1309. {*************************************************************************}
  1310. {    OSA Optional Event Handling Interface}
  1311. {**************************************************************************}
  1312. {    Scripting components that support the Event Handling interface have the }
  1313. {    kOSASupportsEventHandling bit set in it's ComponentDescription.}
  1314. {*************************************************************************}
  1315.     function OSASetResumeDispatchProc (scriptingComponent: ComponentInstance; resumeDispatchProc: AEEventHandlerUPP; refCon: LONGINT): OSAError;
  1316.     {$IFC NOT GENERATINGCFM}
  1317.     inline
  1318.         $2F3C, $8, $0801, $7000, $A82A;
  1319.     {$ENDC}
  1320. {}
  1321. {        OSAComponentFunctionInline(kOSASelectSetResumeDispatchProc, 8);}
  1322. {        This function is used to set the ResumeDispatchProc that will be used}
  1323. {        by OSAExecuteEvent and OSADoEvent if either no event handler can be}
  1324. {        found in the context, or the context event hander "continues" control}
  1325. {        onward. The two constants kOSAUseStandardDispatch and kOSANoDispatch}
  1326. {        may also be passed to this routine indicating that the handler registered}
  1327. {        in the application with AEInstallEventHandler should be used, or no}
  1328. {        dispatch should occur, respectively.}
  1329. {    }
  1330. {        Errors:}
  1331. {            badComponentInstance    invalid scripting component instance}
  1332. {            errOSASystemError}
  1333. {    }
  1334.  
  1335.     const
  1336.         kOSAUseStandardDispatch = kAEUseStandardDispatch;
  1337.  
  1338. {}
  1339. {        Special ResumeDispatchProc constant which may be passed to }
  1340. {        OSASetResumeDispatchProc indicating that the handler registered}
  1341. {        in the application with AEInstallEventHandler should be used.}
  1342. {        }
  1343. {        NOTE:    Had to remove the cast (AEEventHandlerUPP).  The C compiler}
  1344. {                doesn't allow pointer types to be assigned to an enum.  All}
  1345. {                constants must be assigned as enums to translate properly to}
  1346. {                Pascal.}
  1347. {    }
  1348.         kOSANoDispatch = kAENoDispatch;
  1349.  
  1350. {}
  1351. {        Special ResumeDispatchProc constant which may be passed to }
  1352. {        OSASetResumeDispatchProc indicating that no dispatch should occur.}
  1353. {        }
  1354. {        NOTE:    Had to remove the cast (AEEventHandlerUPP).  The C compiler}
  1355. {                doesn't allow pointer types to be assigned to an enum.  All}
  1356. {                constants must be assigned as enums to translate properly to}
  1357. {                Pascal.}
  1358. {    }
  1359.         kOSADontUsePhac = $0001;
  1360.  
  1361. {}
  1362. {        Special refCon constant that may be given to OSASetResumeDispatchProc}
  1363. {        only when kOSAUseStandardDispatch is used as the ResumeDispatchProc.}
  1364. {        This causes the standard dispatch to be performed, except the phac}
  1365. {        handler is not called.  This is useful during tinkerability, when}
  1366. {        the phac handler is used to lookup a context associated with an event's }
  1367. {        direct parameter, and call OSAExecuteEvent or OSADoEvent.  Failure to}
  1368. {        bypass the phac handler would result in an infinite loop.}
  1369. {    }
  1370.  
  1371.     function OSAGetResumeDispatchProc (scriptingComponent: ComponentInstance; var resumeDispatchProc: AEEventHandlerUPP; var refCon: LONGINT): OSAError;
  1372.     {$IFC NOT GENERATINGCFM}
  1373.     inline
  1374.         $2F3C, $8, $0802, $7000, $A82A;
  1375.     {$ENDC}
  1376. {}
  1377. {        OSAComponentFunctionInline(kOSASelectGetResumeDispatchProc, 8);}
  1378. {        Returns the registered ResumeDispatchProc.  If no ResumeDispatchProc has}
  1379. {        been registered, then kOSAUseStandardDispatch (the default) is returned.}
  1380. {    }
  1381. {        Errors:}
  1382. {            badComponentInstance    invalid scripting component instance}
  1383. {            errOSASystemError}
  1384. {    }
  1385.     function OSAExecuteEvent (scriptingComponent: ComponentInstance; {CONST}
  1386.                                     var theAppleEvent: AppleEvent; contextID: OSAID; modeFlags: LONGINT; var resultingScriptValueID: OSAID): OSAError;
  1387.     {$IFC NOT GENERATINGCFM}
  1388.     inline
  1389.         $2F3C, $10, $0803, $7000, $A82A;
  1390.     {$ENDC}
  1391. {}
  1392. {        OSAComponentFunctionInline(kOSASelectExecuteEvent, 16);}
  1393. {        This call is similar to OSAExecute except the initial command to}
  1394. {        execute comes in the form of an AppleEvent.  If the contextID}
  1395. {        defines any event handlers for that event, they are used to process}
  1396. {        the event.  If no event handler can be found in the context}
  1397. {        errAEEventNotHandled is returned.  If an event handler is found and}
  1398. {        the hander "continues" control onward, the ResumeDispatchProc}
  1399. {        (registered with OSASetResumeDispatchProc, above) is called given the}
  1400. {        AppleEvent.  The result is returned as a scriptValueID.}
  1401. {    }
  1402. {        Errors:}
  1403. {            badComponentInstance    invalid scripting component instance}
  1404. {            errOSASystemError}
  1405. {            errOSAInvalidID}
  1406. {            errOSAScriptError:        the executing script got an error}
  1407. {            errAEEventNotHandled:    no handler for event in contextID}
  1408. {    }
  1409. {        ModeFlags:}
  1410. {            kOSAModeNeverInteract}
  1411. {            kOSAModeCanInteract}
  1412. {            kOSAModeAlwaysInteract}
  1413. {            kOSAModeCantSwitchLayer}
  1414. {            kOSAModeDontReconnect}
  1415. {            kOSAModeDoRecord}
  1416. {    }
  1417.     function OSADoEvent (scriptingComponent: ComponentInstance; {CONST}
  1418.                                     var theAppleEvent: AppleEvent; contextID: OSAID; modeFlags: LONGINT; var reply: AppleEvent): OSAError;
  1419.     {$IFC NOT GENERATINGCFM}
  1420.     inline
  1421.         $2F3C, $10, $0804, $7000, $A82A;
  1422.     {$ENDC}
  1423. {}
  1424. {        OSAComponentFunctionInline(kOSASelectDoEvent, 16);}
  1425. {        This call is similar to OSADoScript except the initial command to}
  1426. {        execute comes in the form of an AppleEvent, and the result is an }
  1427. {        AppleEvent reply record.  If the contextID defines any event handlers}
  1428. {        for that event, they are used to process the event.  If no event handler}
  1429. {        can be found in the context errAEEventNotHandled is returned.  If an}
  1430. {        event handler is found and the hander "continues" control onward, the}
  1431. {        ResumeDispatchProc (registered with OSASetResumeDispatchProc, above) is}
  1432. {        called given the AppleEvent.  The result is returned in the form of an}
  1433. {        AppleEvent reply descriptor. If at any time the script gets an error, or}
  1434. {        if the ResumeDispatchProc returns a reply event indicating an error,}
  1435. {        then the OSADoEvent call itself returns an error reply (i.e. OSADoEvent}
  1436. {        should never return errOSAScriptError).  Any error result returned by}
  1437. {        the ResumeDispatchProc will be returned by OSADoEvent.}
  1438. {    }
  1439. {        Errors:}
  1440. {            badComponentInstance    invalid scripting component instance}
  1441. {            errOSASystemError}
  1442. {            errOSAInvalidID}
  1443. {            errAEEventNotHandled:    no handler for event in contextID}
  1444. {    }
  1445. {        ModeFlags:}
  1446. {            kOSAModeNeverInteract}
  1447. {            kOSAModeCanInteract}
  1448. {            kOSAModeAlwaysInteract}
  1449. {            kOSAModeCantSwitchLayer}
  1450. {            kOSAModeDontReconnect}
  1451. {            kOSAModeDoRecord}
  1452. {    }
  1453.     function OSAMakeContext (scriptingComponent: ComponentInstance; {CONST}
  1454.                                     var contextName: AEDesc; parentContext: OSAID; var resultingContextID: OSAID): OSAError;
  1455.     {$IFC NOT GENERATINGCFM}
  1456.     inline
  1457.         $2F3C, $C, $0805, $7000, $A82A;
  1458.     {$ENDC}
  1459. {}
  1460. {        OSAComponentFunctionInline(kOSASelectMakeContext, 12);}
  1461. {        Makes a new empty context which may be passed to OSAExecute or }
  1462. {        OSAExecuteEvent.  If contextName is typeNull, an unnamed context is}
  1463. {        created. If parentContext is kOSANullScript then the resulting context}
  1464. {        does not inherit bindings from any other context.}
  1465. {    }
  1466. {        Errors:}
  1467. {            badComponentInstance    invalid scripting component instance}
  1468. {            errOSASystemError}
  1469. {            errOSAInvalidID}
  1470. {            errAECoercionFail:        contextName is invalid}
  1471. {    }
  1472.  
  1473. { $ALIGN RESET}
  1474. { $POP}
  1475.  
  1476. {$ENDC}
  1477.  {__OSA__}
  1478.  
  1479. implementation
  1480. end.
  1481.